﻿using System.Collections.Generic;

namespace ZilLion.TaskManager.Core.SystemMonitor
{
    /// <summary>
    /// 任务的停止监控者
    /// 用于任务异常停止的检测
    /// </summary>
    public class TaskStopMonitor : BaseMonitor
    {
        public override int Interval
        {
            get
            {
                return 1000 * 60;//1分钟扫描
            }
        }

        private List<int> lastscantaskids = new List<int>();

        protected override void Monitor()
        {
         //todo 任务状态为运行中，但是本地却没有运行，任务状态可能有问题

                //List<int> taskids = new List<int>();
                //SqlHelper.ExcuteSql(GlobalConfig.TaskDataBaseConnectString, (c) =>
                //{
                //    tb_task_dal taskdal = new tb_task_dal();
                //    taskids = taskdal.GetTaskIDsByState(c, (int)EnumTaskState.Running, GlobalConfig.NodeID);
                //});
                //List<int> currentscantaskids = new List<int>();
                //foreach (var taskid in taskids)
                //{

                //    var taskruntimeinfo = TaskPoolManager.CreateInstance().Get(taskid.ToString());
                //    if (taskruntimeinfo == null)
                //    {
                //        currentscantaskids.Add(taskid);
                //    }

                //}


                //var recovertaskids = (from o in lastscantaskids
                //                      from c in currentscantaskids
                //                      where o == c
                //                      select o).ToList();
                //if (recovertaskids != null && recovertaskids.Count > 0)
                //    recovertaskids.ForEach((c) =>
                //    {
                //        LogHelper.AddTaskError("任务资源运行可能异常停止了", c, new Exception("任务处于运行状态，但是相应集群节点中，未发现任务在运行"));
                //    });
                //lastscantaskids = currentscantaskids;
          
        }
    }
}
